#include "StdAfx.h"
#include "DataSQL.h"

CDataSQL::CDataSQL(void)
{
	m_nType = T_INT;
	m_value.iint = 0;
	m_value.ddouble = 0.0;
	m_value.sstring = NULL;
}

CDataSQL::~CDataSQL(void)
{
}

CDataSQL::CDataSQL(const int& nType)
{
	m_nType = nType;
	if(nType == T_INT)
		m_value.iint = 0;
	else if(nType == T_DOUBLE)
		m_value.ddouble = 0.0;
	else if(nType == T_STRING || nType == UTF_STRING)	
	{
		CString sText = _T("");
		m_value.sstring =(TCHAR*) malloc((_tcslen((LPCTSTR)sText)+1)*sizeof(TCHAR));
		_tcscpy(m_value.sstring, (LPCTSTR)sText);
	}
}

// *************************************************************************
// CData
/**
*/
// *************************************************************************
CDataSQL::CDataSQL(const int& nType, const int& iInt)
{
	m_nType = nType;
	if(nType == T_INT)
		m_value.iint = iInt;
}


// *************************************************************************
// CData
/**
*/
// *************************************************************************
CDataSQL::CDataSQL(const int& nType, const double& dDouble)
{
	m_nType = nType;
	if(nType == T_DOUBLE)
		m_value.ddouble = dDouble;
}

// *************************************************************************
// CData
/**
*/
// *************************************************************************
CDataSQL::CDataSQL(const int& nType, const CString& sString)
{
	m_nType= nType;
	if(nType == T_STRING || UTF_STRING)	
	{
		m_value.sstring =(TCHAR*) malloc((_tcslen((LPCTSTR)sString)+1)*sizeof(TCHAR));
		_tcscpy(m_value.sstring, (LPCTSTR)sString);
	}
}

void CDataSQL::setValue(const int& iInt)
{
	if(m_nType == T_INT)
	{
		m_value.iint = iInt;
	}
}

// *************************************************************************
// set
/**
*/
// *************************************************************************
void CDataSQL::setValue(const double& dDouble)
{
	if(m_nType == T_DOUBLE)
	{
		m_value.ddouble = dDouble;
	}
}

// *************************************************************************
// set
/**
*/
// *************************************************************************
void CDataSQL::setValue(const CString& sString)
{
	if(m_nType == T_STRING || UTF_STRING)
	{
		if(m_value.sstring)
			m_value.sstring =(TCHAR*) realloc(m_value.sstring, (_tcslen((LPCTSTR)sString)+1)*sizeof(TCHAR));
		else
			m_value.sstring =(TCHAR*) malloc((_tcslen((LPCTSTR)sString)+1)*sizeof(TCHAR));
		_tcscpy(m_value.sstring, (LPCTSTR)sString);
	}
}

int CDataSQL::getIntValue() const
{
	if(m_nType== T_INT)
		return m_value.iint;
	return 0;
}

// *************************************************************************
// getDoubleValue
/**
*/
// *************************************************************************
double CDataSQL::getDoubleValue() const
{
	if(m_nType == T_DOUBLE)
		return m_value.ddouble;
	return 0.0;
}

// *************************************************************************
// getStringValue
/**
*/
// *************************************************************************
CString CDataSQL::getStringValue() const
{
	if(m_nType == T_STRING || UTF_STRING)
		return CString(m_value.sstring);
	return _T("");
}

void CDataSQL::setType(const int& t)
{
	m_nType = t;
}

// *************************************************************************
// getType
/**
*/
// *************************************************************************
int	CDataSQL::getType()  const
{
	return m_nType;
}

bool CDataSQL::isIntType() const
{
	return m_nType== T_INT;
}

// *************************************************************************
// getExpression
/**
*/
// *************************************************************************
bool CDataSQL::isDoubleType() const
{
	return m_nType == T_DOUBLE;
}

// *************************************************************************
// getExpression
/**
*/
// *************************************************************************
bool CDataSQL::isStringType() const
{
	return m_nType == T_STRING;
}
